#include <bits/stdc++.h>
using namespace std;
int n;
int t[1001][1001]; // i rzad, j kolumna; 1 rzad, 2 kolumna
//wspolrzedne zer to to po prostu wszystkie te same i i j
void wypisz()
{
for(int i = 0; i < n; i ++) // Wypisanie wyniku
{ // UWAGA! POMOCNICZE SPACJE!
for(int j = 0; j < n; j ++)
{
cout << t[i][j] << " ";
//if((t[i][j] <= 9) && (t[i][j] != -1)) cout << " ";
}
cout << "\n";
}
}
void pomocnicze_przekatne(int i, int j, int wartosc)
{
while(i > 0)
{
if(t[i][j] != 0) t[i][j] = wartosc;
i --;
j ++;
}
}
int main()
{
cin >> n;
if(n == 2)
{
cout << 0 << " " << 1 << "\n" << 1 << " " << 0 << "\n";
return 0;
}
for(int i = 0; i < n; i ++)
{
for(int j = 0; j < n; j ++)
{
if(i != j)
t[i][j] = -1;
}
}
for(int i = 1; i < n; i ++) // uzupelnienie ostatniego rzedu i ostatniej kolumny
{
t[n - 1][n - i - 1] = i;
t[n - i - 1][n - 1] = i;
}
// Zaznaczenie wiadomych przekatnych
for(int i = 0; i < n - 3; i ++)
{
for(int j = 0; j < n - i - 1; j ++) // Uwaga przy j
{
if(t[n - j - 1][j + i] != 0) t[n - j - 1][j + i] = t[n - 1][i];
}
}
//wypisz();
//cout << "\n";
t[n - 2][0] = t[n - 1][n - 3];
t[0][n - 2] = t[n - 1][n - 3];
for(int i = n - 2; i > 1; i --) // Dodac aktualizacje dodatkowych przekatnych
{
t[i][0] = t[i + 1][i - 1];
t[0][i] = t[i + 1][i - 1];
if(t[i][1] == -1)
{
t[i][1] = t[i + 1][n - 1];
t[1][i] = t[i + 1][n - 1];
pomocnicze_przekatne(i, 1, t[1][i]);
}
}
t[1][0] = t[2][n - 1];
t[0][1] = t[2][n - 1];
wypisz();
//cout << "\n";
return 0;
}
347. Top K Frequent Elements | 1503. Last Moment Before All Ants Fall Out of a Plank |
430. Flatten a Multilevel Doubly Linked List | 1290. Convert Binary Number in a Linked List to Integer |
1525. Number of Good Ways to Split a String | 72. Edit Distance |
563. Binary Tree Tilt | 1306. Jump Game III |
236. Lowest Common Ancestor of a Binary Tree | 790. Domino and Tromino Tiling |
878. Nth Magical Number | 2099. Find Subsequence of Length K With the Largest Sum |
1608A - Find Array | 416. Partition Equal Subset Sum |
1446. Consecutive Characters | 1618A - Polycarp and Sums of Subsequences |
1618B - Missing Bigram | 938. Range Sum of BST |
147. Insertion Sort List | 310. Minimum Height Trees |
2110. Number of Smooth Descent Periods of a Stock | 2109. Adding Spaces to a String |
2108. Find First Palindromic String in the Array | 394. Decode String |
902. Numbers At Most N Given Digit Set | 221. Maximal Square |
1200. Minimum Absolute Difference | 1619B - Squares and Cubes |
1619A - Square String | 1629B - GCD Arrays |